#include <stdio.h>
#include <string.h>

// 辅助函数：将数值转换为对应进制的字符
char valueToChar(int value) {
    if (value >= 0 && value <= 9) {
        return '0' + value;
    } else {
        return 'A' + (value - 10);
    }
}

// 十进制转任意进制
void decimalToBaseR(int n, int r, char str[]) {
    if (n == 0) {
        strcpy(str, "0");
        return;
    }

    char temp[33]; // 临时数组，最多32位 + 1位结束符
    int index = 0;

    while (n > 0) {
        int remainder = n % r;
        temp[index++] = valueToChar(remainder);
        n /= r;
    }

    // 反转临时数组
    for (int i = 0; i < index; i++) {
        str[i] = temp[index - i - 1];
    }
    str[index] = '\0'; // 添加字符串结束符
}

int main() {
    int n, r;
    printf("Enter a decimal number (0 < n < 10^9): ");
    scanf("%d", &n);
    printf("Enter the base (2 <= r < 17): ");
    scanf("%d", &r);

    if (n <= 0 || n >= 1000000000 || r < 2 || r >= 17) {
        printf("Invalid input!");
        return 1;
    }

    char str[33];
    decimalToBaseR(n, r, str);

    printf("The base %d representation of %d is: %s", r, n, str);

    return 0;
}
